﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using InfoLayer;
using ControlLayer;

namespace GUI
{
    public partial class frmTraCuuPhong : Form
    {
        PhongControl phongControl;
        PhongInfo phongInfo;

        LoaiPhongControl loaiphongcontrol;
        LoaiPhongInfo loaiphonginfo;

        PhieuThuePhongControl phieuThuePhongControl;
        PhieuThuePhongInfo phieuThuePhongInfo;

        HoaDonControl hoaDonControl;
        HoaDonInfo hoaDonInfo;
        bool isCheck = false;

        public frmTraCuuPhong()
        {
            InitializeComponent();
            phongControl = new PhongControl();
            phongInfo = new PhongInfo();
            loaiphongcontrol = new LoaiPhongControl();
            loaiphonginfo = new LoaiPhongInfo();
            phieuThuePhongControl = new PhieuThuePhongControl();
            phieuThuePhongInfo = new PhieuThuePhongInfo();
            hoaDonControl = new HoaDonControl();
            hoaDonInfo = new HoaDonInfo();
        }

        private void frmTraCuuPhong_Load(object sender, EventArgs e)
        {
            
            DataTable _dt; 
            DataTable _dt3;
            DataTable _dt2;
            DataTable _dt4;
            DataTable _dt5;

            _dt = phongControl.LayBangDanhSachPhong();
            _dt2 = phongControl.LayBangDanhSachPhong();
            _dt3 = loaiphongcontrol.LayBangDanhSachLoaiPhong();
            _dt4 = phieuThuePhongControl.LayBangDanhSachThanhTien();
            _dt5 = phieuThuePhongControl.LayBangDanhSachThanhTien();

            comboBoxMaPhong.DataSource = _dt;
            comboBoxMaPhong.DisplayMember = "MaPhong";
            comboBoxMaPhong.ValueMember = "MaPhong";
            comboBoxMaPhong.SelectedIndex = -1;
            comboBoxMaPhong.AutoCompleteMode = AutoCompleteMode.Suggest;
            comboBoxMaPhong.AutoCompleteSource = AutoCompleteSource.ListItems;

            comboBoxTenPhong.DataSource = _dt2;
            comboBoxTenPhong.DisplayMember = "TenPhong";
            comboBoxTenPhong.ValueMember = "TenPhong";
            comboBoxTenPhong.SelectedIndex = -1;
            comboBoxTenPhong.AutoCompleteMode = AutoCompleteMode.Suggest;
            comboBoxTenPhong.AutoCompleteSource = AutoCompleteSource.ListItems;

            comboBoxTenLoaiPhong.DataSource = _dt3;
            comboBoxTenLoaiPhong.DisplayMember = "TenLoaiPhong";
            comboBoxTenLoaiPhong.ValueMember = "MaLoaiPhong";
            comboBoxTenLoaiPhong.SelectedIndex = -1;
            comboBoxTenLoaiPhong.AutoCompleteMode = AutoCompleteMode.Suggest;
            comboBoxTenLoaiPhong.AutoCompleteSource = AutoCompleteSource.ListItems;

            comboBoxGiaTu.DataSource = _dt4;
            comboBoxGiaTu.DisplayMember = "DonGiaPhong";
            //comboBoxGiaTu.ValueMember = "MaPhong";
            comboBoxGiaTu.SelectedIndex = -1;
            comboBoxGiaTu.AutoCompleteMode = AutoCompleteMode.Suggest;
            comboBoxGiaTu.AutoCompleteSource = AutoCompleteSource.ListItems;

            comboBoxGiaDen.DataSource = _dt5;
            comboBoxGiaDen.DisplayMember = "DonGiaPhong";
            //comboBoxGiaDen.ValueMember = "MaPhong";
            comboBoxGiaDen.SelectedIndex = -1;
            comboBoxGiaDen.AutoCompleteMode = AutoCompleteMode.Suggest;
            comboBoxGiaDen.AutoCompleteSource = AutoCompleteSource.ListItems;

            comboBoxTinhTrangPhong.Items.Add("True");
            comboBoxTinhTrangPhong.Items.Add("False");

             
            dateTimePickerTuNgay.Value = DateTime.Now;
            dateTimePickerDenNgay.Value = DateTime.Now;
        }

        private void btnTimKiem_Click(object sender, EventArgs e)
        {
            listViewDanhSachPhong.Items.Clear();
             
            string strtungay = dateTimePickerTuNgay.Value.ToString("MM/dd/yyyy 00:00:00");
            string strdenngay = dateTimePickerDenNgay.Value.ToString();// ("MM/dd/yyyy");
            string strtungay_tra = dateTimePickerTuNgayTT.Value.ToString("MM/dd/yyyy 00:00:00");
            string strdenngay_tra = dateTimePickerDenNgayTT.Value.ToString();// ("MM/dd/yyyy");
            DataTable dt;
            bool isChoose = false;
            if (comboBoxMaPhong.Visible == true)
            {
                if (comboBoxMaPhong.SelectedIndex >= 0)
                {
                    phongInfo.MaPhong = comboBoxMaPhong.SelectedValue.ToString();// Text;
                    isChoose = true;
                }

                if (comboBoxTenPhong.SelectedIndex >= 0)
                {
                    phongInfo.TenPhong = comboBoxTenPhong.SelectedValue.ToString();
                    isChoose = true;
                }

                if (comboBoxTenLoaiPhong.SelectedIndex >= 0)
                {
                    phongInfo.MaLoaiPhong = comboBoxTenLoaiPhong.SelectedValue.ToString();
                    isChoose = true;
                }

                if (comboBoxTinhTrangPhong.SelectedIndex >= 0)
                {
                    if (comboBoxTinhTrangPhong.Text == "True")
                    {
                        phongInfo.TinhTrangPhong = true;
                    }
                    if (comboBoxTinhTrangPhong.Text == "False")
                    {
                        phongInfo.TinhTrangPhong = false;
                    }
                    isChoose = true;
                    isCheck = true;
                }

                if (isChoose == false)
                {
                    MessageBox.Show("Bạn phải chọn ít nhất một trong các gợi ý! ", "Thong bao", MessageBoxButtons.OK);
                    return;
                }
                dt = phongControl.Timkiemphong(phongInfo, isCheck);
                Load_DanhSach_Phong_ListView(dt);
                ResetAll();
            }
            


            
            DateTime hientai = DateTime.Now;


            if (strtungay != null && strdenngay != null
                && dateTimePickerDenNgay.Visible == true && dateTimePickerTuNgay.Visible == true)
            {

                if (dateTimePickerTuNgay.Value > dateTimePickerDenNgay.Value)
                {
                    MessageBox.Show("'Ngày Trả' phải lớn hơn 'Ngày Thuê'");
                }
                else if (dateTimePickerDenNgay.Value > hientai || dateTimePickerTuNgay.Value > hientai)
                {
                    MessageBox.Show("Không thể chọn lớn hơn ngày hiện tại!");
                }
                else if (dateTimePickerTuNgay.Value <= dateTimePickerDenNgay.Value)
                {
                     
                    dt = phieuThuePhongControl.Timkiemphong(strtungay, strdenngay);
                    Load_DanhSach_Phong_ListView(dt);
                }

            }

            if (strtungay_tra != null && strdenngay_tra != null
                && dateTimePickerTuNgayTT.Visible == true && dateTimePickerDenNgayTT.Visible == true)
            {

                if (dateTimePickerTuNgayTT.Value > dateTimePickerDenNgayTT.Value)
                {
                    MessageBox.Show("'Đến Ngày' phải lớn hơn 'Từ Ngày'");
                }
                else if (dateTimePickerTuNgayTT.Value > hientai || dateTimePickerDenNgayTT.Value > hientai)
                {
                    MessageBox.Show("Không thể chọn lớn hơn ngày hiện tại!");
                }
                else if (dateTimePickerTuNgayTT.Value <= dateTimePickerDenNgayTT.Value)
                {
                     
                    dt = hoaDonControl.Timkiemphong(strtungay_tra, strdenngay_tra);
                    Load_DanhSach_Phong_ListView(dt);
                }

            }




            if (comboBoxGiaTu.Visible == true)
            {
                string giatu = comboBoxGiaTu.Text;
                string giaden = comboBoxGiaDen.Text;
                float fgiatu = 0;
                float fgiaden = 0;
                 
                if (comboBoxGiaTu.SelectedIndex >= 0 && comboBoxGiaDen.SelectedIndex >= 0)
                {
                    fgiatu = float.Parse(giatu);
                    fgiaden = float.Parse(giaden);
                }
                else
                {
                    MessageBox.Show("Bạn quên chọn Giá");
                    return;
                }
                if (fgiatu > fgiaden)
                {
                    MessageBox.Show("'Giá Từ' không được lớn hơn 'Giá Đến' ");
                }
                else
                {
                     
                    dt = phieuThuePhongControl.TimKiemTriGia((int)fgiatu, (int)fgiaden);
                    Load_DanhSach_Phong_ListView(dt);
                }

            }
        }

        private void Load_DanhSach_Phong_ListView(DataTable tbPhong)
        {
            ListViewItem item;
            listViewDanhSachPhong.Items.Clear();

            for (int i = 0; i < tbPhong.Rows.Count; i++)
            {
                item = listViewDanhSachPhong.Items.Add(tbPhong.Rows[i][0].ToString());
                for (int j = 1; j < tbPhong.Columns.Count; j++)
                    item.SubItems.Add(tbPhong.Rows[i][j].ToString());
            }
        }

        private void btnThoat_Click(object sender, EventArgs e)
        {
            Close();
        }

        public void ResetAll()
        {
            comboBoxMaPhong.SelectedIndex = -1;
            comboBoxTenPhong.SelectedIndex = -1;
            comboBoxTinhTrangPhong.SelectedIndex = -1;
            comboBoxTenLoaiPhong.SelectedIndex = -1;

            phongInfo.MaPhong = "";
            phongInfo.TenPhong = "";
            phongInfo.MaLoaiPhong = "";
            isCheck = false;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //labelMaPhong.Visible = false;
            //labelTenPhong.Visible = false;
            //labelTenLoaiPhong.Visible = false;
            //labelTinhTrangPhong.Visible = false;
            //comboBoxMaPhong.Visible = false;
            //comboBoxTenPhong.Visible = false;
            //comboBoxTenLoaiPhong.Visible = false;
            //comboBoxTinhTrangPhong.Visible = false;

            //labelTuNgay.Visible = true;
            //labelDenNgay.Visible = true;
            //labelGiaTu.Visible = false;
            //labelGiaDen.Visible = false;
            //dateTimePickerTuNgay.Visible = true;
            //dateTimePickerDenNgay.Visible = true;
            //comboBoxGiaTu.Visible = false;
            //comboBoxGiaDen.Visible = false;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            //labelMaPhong.Visible = true;
            //labelTenPhong.Visible = true;
            //labelTenLoaiPhong.Visible = true;
            //labelTinhTrangPhong.Visible = true;
            //comboBoxMaPhong.Visible = true;
            //comboBoxTenPhong.Visible = true;
            //comboBoxTenLoaiPhong.Visible = true;
            //comboBoxTinhTrangPhong.Visible = true;

            //labelTuNgay.Visible = false;
            //labelDenNgay.Visible = false;
            //labelGiaTu.Visible = false;
            //labelGiaDen.Visible = false;
            //dateTimePickerTuNgay.Visible = false;
            //dateTimePickerDenNgay.Visible = false;
            //comboBoxGiaTu.Visible = false;
            //comboBoxGiaDen.Visible = false;
        }

        private void button3_Click(object sender, EventArgs e)
        {
            //labelMaPhong.Visible = false;
            //labelTenPhong.Visible = false;
            //labelTenLoaiPhong.Visible = false;
            //labelTinhTrangPhong.Visible = false;
            //comboBoxMaPhong.Visible = false;
            //comboBoxTenPhong.Visible = false;
            //comboBoxTenLoaiPhong.Visible = false;
            //comboBoxTinhTrangPhong.Visible = false;

            //labelTuNgay.Visible = false;
            //labelDenNgay.Visible = false;
            //labelGiaTu.Visible = true;
            //labelGiaDen.Visible = true;
            //dateTimePickerTuNgay.Visible = false;
            //dateTimePickerDenNgay.Visible = false;
            //comboBoxGiaTu.Visible = true;
            //comboBoxGiaDen.Visible = true;
        }


    }
}
